package com.example.untils;

public class StringUtil {

    /**
     * @description 去除字符串中的所有空格
     * @create 2016年8月30日下午3:18:52
     * @version 1.0
     * @param str
     *            原始字符串
     * @return String
     */
    public static String removeBlank(String str) {
        String result = "";
        result = str.replace(" ", "");
        return result.trim();
    }

    /**
     * @description 去除特殊标点符号(包括空格)
     * @create 2017年4月2日下午5:00:27
     * @version 1.0
     * @param str
     * @return
     */
    public static String removeSpecialStr(String str) {
        String returnStr = "";
        returnStr = str.replaceAll("[\\pP\\p{Punct}\\d+]", "");
        return removeBlank(returnStr);
    }

    /**
     * 
     * @description 剔除非中文或者非数字字符串
     * @author lli
     * @create 2017年4月5日上午11:18:36
     * @version 1.0
     * @param str
     * @return
     */
    public static String matchChineseAndNum(final String str) {
        String returnStr = "";
        returnStr = str.replaceAll("[\\pP\\p{Punct}+]", "");
        return removeBlank(returnStr);

    }

    /**
     * 
     * @description 剔除非中文或者非数字字符串
     * @author lli
     * @create 2017年4月5日上午11:18:36
     * @version 1.0
     * @param str
     * @return
     */
    public static String numToChinese(final String str) {
        String returnStr = "";
        returnStr = str.replaceAll("0", "零").replace("1", "一")
                .replace("2", "二").replace("3", "三").replace("4", "四")
                .replace("5", "五").replace("6", "六").replace("7", "七")
                .replace("8", "八").replace("9", "九");
        return removeBlank(returnStr);

    }

    /**
     * 
     * @description 获取最大子字符串长度
     * @author lli
     * @create 2017年4月5日下午4:00:23
     * @version 1.0
     * @param s1
     * @param s2
     * @return
     */
    public static int getMaxSubStringLen(final String s1, final String s2) {
        String max = "", min = "";
        max = (s1.length() > s2.length()) ? s1 : s2;
        min = (s1.length() > s2.length()) ? s2 : s1;
        String target = null;
        // 最外层：min子串的长度，从最大长度开始
        for (int i = min.length(); i >= 1; i--) {
            // 遍历长度为i的min子串，从0开始
            for (int j = 0; j <= min.length() - i; j++) {
                target = min.substring(j, j + i);
                // 遍历长度为i的max子串，判断是否与target子串相同，从0开始
                for (int k = 0; k <= max.length() - i; k++) {
                    if (max.substring(k, k + i).equals(target)) {
                        return i;
                    }
                }
            }
        }
        return 0;
    }

}